package com.wu.ssm.study.threadlocal;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by wzf on 2018/11/24/024.
 */
public class MyThreadLocal <T> {

    private Map<Thread,T> container = Collections.synchronizedMap(new HashMap<Thread,T>());

    public void set(T value){
        container.put(Thread.currentThread(),value);
    }

    public T get(){
        Thread thread = Thread.currentThread();
        T value = container.get(thread);

        if(value == null || !container.containsKey(thread)){
            value = initialValue();
        }
        return value;
    }

    public void remove(){
        container.remove(Thread.currentThread());
    }

    public T initialValue(){
        return null;
    }
}
